perm filename APP6[AIM,DBL]2 blob
sn#125910 filedate 1974-10-22 generic text, type T, neo UTF8
00100 .DEVICE XGP
00200 .FONT 1 "FIX25"
00300 .FONT 2 "SIGN57"
00400 .FONT 3 "SHD40"
00500 .FONT 4 "BDI25"
00600 .FONT 5 "NGB30"
00700 .FONT 6 "NGR20"
00800 .PAGE FRAME 53 HIGH 75 WIDE
00900 .TURN ON "↓_π{"
01000 .TURN ON "\" FOR "%"
01100 .MACRO B ⊂ BEGIN VERBATIM GROUP ⊃
01200 .MACRO E ⊂ APART END ⊃
01300 .TABBREAK
01400 .EVERY FOOTING(\6Fourth Draft .... {DATE},page A6.{IF PAGE = 1 THEN 1 ELSE PAGE},User/CF Dialogue excerpts\*)
01500 .EVERY HEADING(\3BEINGS\*,,\4Doug Lenat\*)
01600 .COUNT PAGE PRINTING "1"
01700 .NEXT PAGE
01800
00100 \2APPENDIX 6. \* \3CF .... RUNNING\*
00200 .NOFILL
00300
00400
00500
00600
00700 \5<Here is the synthesized program itself, CF, running.>\*
00800
00900 ←\4ENTER(T)\*
01000
01100 USER INTERRUPT LEVEL... \40\*
01200
01300
01400 \5PUP:\* (PUP IS ABOUT TO WORK ON CONCEPT FORMATION)
01500
01600
01700 \5PUP:\* (THE TYPE OF CONCEPT FORMATION PUP IS ABOUT TO WORK ON IS
01800 CLASSIFICATORY:CONCEPT:FORMATION)
01900
02000 (COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
02100
02200 \4(ARCH (A B C) (S A B) (S C B) (BLOCK A) (BLOCK B) (BLOCK C))\*
02300
02400 ARCH
02500 OBJECTS (A B C)
02600 MAY HAVE ((S A B) (S C B) (BLOCK A) (BLOCK B) (BLOCK C))
02700
02800 (COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
02900
03000 \4(TOWER (A B C D) (S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))\*
03100
03200 ARCH
03300 OBJECTS (A B C)
03400 MAY HAVE ((S A B) (S C B) (BLOCK A) (BLOCK B) (BLOCK C))
03500
03600 TOWER
03700 OBJECTS (A B C D)
03800 MAY HAVE ((S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
03900
04000 (COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
04100
04200 \4(??? (A B C) (S A B) (S C B))\*
04300
04400 (COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE:NAME:OF:CLASS IS
04500 ARCH))
04600
04700 PLEASE GIVE ME NAME:OF:CLASS
04800
04900 \4ARCH\*
05000
05100 ARCH
05200 OBJECTS (A B C)
05300 MAY HAVE ((S A B) (S C B) (BLOCK A) (BLOCK B) (BLOCK C))
05400
05500 TOWER
05600 OBJECTS (A B C D)
05700 MAY HAVE ((S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
05800
05900 (COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
06000
06100 \4(??? (A B C) (S A B) (S C B) (BLOCK A) (BLOCK C) (TOUCH A C) (BLOCK B))\*
06200
06300 (COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE:NAME:OF:CLASS IS
06400 ARCH))
06500
06600 PLEASE GIVE ME NAME:OF:CLASS
06700
06800 \4NOTHING\*
06900
07000 ARCH
07100 OBJECTS (A B C)
07200 MUSNT HAVE ((TOUCH A C))
07300 MAY HAVE ((S A B) (S C B) (BLOCK A) (BLOCK B) (BLOCK C))
07400
07500 TOWER
07600 OBJECTS (A B C D)
07700 MAY HAVE ((S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
07800
07900 (COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
08000
08100 \4(??? (A B C) (BLOCK A) (BLOCK B) (BLOCK C))\*
08200
08300 (COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE:NAME:OF:CLASS IS
08400 ARCH))
08500
08600 PLEASE GIVE ME NAME:OF:CLASS
08700
08800 \4NOTHING\*
08900
09000 ARCH
09100 OBJECTS (A B C)
09200 MUST HAVE ((S A B))
09300 MUSNT HAVE ((TOUCH A C))
09400 MAY HAVE ((S C B) (BLOCK A) (BLOCK B) (BLOCK C))
09500
09600 TOWER
09700 OBJECTS (A B C D)
09800 MAY HAVE ((S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
09900
10000 (COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
10100
10200 \4(??? (A B C) (BLOCK A) (BLOCK C) (S A B) (BLOCK B))\*
10300
10400 (COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE:NAME:OF:CLASS IS
10500 ARCH))
10600
10700 PLEASE GIVE ME NAME:OF:CLASS
10800
10900 \4NOTHING\*
11000
11100 ARCH
11200 OBJECTS (A B C)
11300 MUST HAVE ((S A B) (S C B))
11400 MUSNT HAVE ((TOUCH A C))
11500 MAY HAVE ((BLOCK A) (BLOCK B) (BLOCK C))
11600
11700 TOWER
11800 OBJECTS (A B C D)
11900 MAY HAVE ((S A B) (S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
12000
12100 \5<notice that at this point, the model for ARCH is the usual one>\*
12200
12300
12400 (COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
12500
12600 \4(??? (A B C) (TOUCH A C) (TOUCH B C) (BLOCK A) (RED B))\*
12700
12800 (COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE:NAME:OF:CLASS IS
12900 TOWER))
13000
13100 PLEASE GIVE ME NAME:OF:CLASS
13200
13300 \4ROW\*
13400
13500 ARCH
13600 OBJECTS (A B C)
13700 MUST HAVE ((S A B) (S C B))
13800 MUSNT HAVE ((TOUCH A C))
13900 MAY HAVE ((BLOCK A) (BLOCK B) (BLOCK C))
14000
14100 TOWER
14200 OBJECTS (A B C D)
14300 MUST HAVE ((S A B))
14400 MAY HAVE ((S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
14500
14600 ROW
14700 OBJECTS (A B C)
14800 MAY HAVE ((TOUCH A C) (TOUCH B C) (BLOCK A) (RED B))
14900
15000 (COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
15100
15200 \4(ARCH (A B C D) (S A B) (TOUCH A C))\*
15300
15400 ARCH
15500 OBJECTS (A B C (D))
15600 MUST HAVE ((S A B))
15700 MAY HAVE ((BLOCK A) (BLOCK B) (BLOCK C) (TOUCH A C) (S C B))
15800
15900 \5<notice how contradictory user input is handled: features are simply
16000 transferred from the MUST/MUSTNOT sets to the MAY set>\*
16100
16200 TOWER
16300 OBJECTS (A B C D)
16400 MUST HAVE ((S A B))
16500 MAY HAVE ((S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
16600
16700 ROW
16800 OBJECTS (A B C)
16900 MAY HAVE ((TOUCH A C) (TOUCH B C) (BLOCK A) (RED B))
17000
17100
17200 (COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
17300
17400 \4(HALT)\*
17500
17600 \5PUP:\* (PUP HAS THOUGHT ABOUT THE CLASSIFICATORY:CONCEPT:FORMATION TYPE OF
17700 CONCEPT:FORMATION)
17800
17900
18000
18100
18200 FINISHED CURRENT SERVICE; WHAT SHOULD I DO? TYPE ONE OF:
18300
18400 1 EXIT FROM SYSTEM
18500 2 CONTINUE SERVING, AS BEFORE
18600 3 CONTINUE SERVING, BUT GET A NEW USER INTERRUPT LEVEL
18700 4 REINITIALIZE SYSTEM AND START FROM BEGINNING AGAIN
18800
18900 OK, GO .......... \43\*
19000
19100 USER INTERRUPT LEVEL... \410\*
19200
19300 \5The user has switched to a mode where he can interrupt after each BEING
19400 gets control, and ask it questions.\*
19500
19600 INTERRUPT? \4YES
19700
19800 \*REQUEST: \4CH
19900 \*NIL *** SATISFY *** (CF:1) \5<the control history stack. note that the
20000 top element is CF:1, not SERVE.>\*
20100
20200 REQUEST: \4WHAT
20300 \*(SATISFY THE SIMPLE SUBGOAL (AWARE USER (PUP IS ABOUT TO WORK ON
20400 CONCEPT FORMATION)))
20500 REQUEST: \4HOW
20600 \*(PASS CONTROL TO THE SIMPLEST SUFFICIENT BEING)
20700
20800 REQUEST: \4WHY
20900 \*((AWARE USER (PUP IS ABOUT TO WORK ON CONCEPT FORMATION)) IS A REQUISITE
21000 TO BE SATISFIED)
21100
21200 REQUEST: \4OLDER
21300 \*CF:1
21400
21500 REQUEST: \4WHAT
21600 \*(A SPECIALIZED BEING WHICH DOES (LEARN HOW TO IMPOSE A CONCEPT
21700 STRUCTURING UPON A DOMAIN; LEARN HOW TO CHARACTERIZE,
21800 OR AT LEAST DISTINGUISH, VARIOUS CONCEPTS))
21900
22000 REQUEST: \4WHY
22100 \*(CONCEPT:LEARNING IS NECESSARY TO CONCEPT KNOWLEDGE AND CONCEPT:FORMATION
22200 IS TOO GENERAL TO USE AS IT IS)
22300
22400 REQUEST: \4QUIT
22500
22600 \*INTERRUPT? \4NO
22700 \*INTERRUPT? \4YES
22800
22900 \*REQUEST: \4BEING
23000 \*PAD:2
23100
23200 REQUEST: \4WHAT
23300 \*(A SPECIALIZED BEING WHICH DOES (DIVIDE A DOMAIN INTO SUBDOMAINS;
23400 USUALLY THESE WILL BE DISJOINT, AND THEIR UNION
23500 WILL BE THE ENTIRE DOMAIN))
23600
23700 REQUEST: \4WHY
23800 \*(BECAUSE PUP MUST ENCODE A FUNCTION WHICH PARTITIONS A DOMAIN INTO
23900 CLASSES, AND PARTITION:A:DOMAIN IS TOO GENERAL
24000 TO USE AS IT IS)
24100
24200 REQUEST: \4HOW
24300 \*(BY BUILDING UP THE PARTITION GRADUALLY, BY ADDING TO OUR KNOWLEDGE OF
24400 THE PARTITION ONE PAIR AT A TIME; HERE A
24500 PAIR IS <ELEMENT, CLASS:NAME>)
24600
24700 REQUEST: \4QUIT
24800
24900 \*INTERRUPT? \4YES
25000
25100 \*REQUEST: \4CH
25200 \*NIL *** TAKE:HOLD:OF:3 *** (PAD:2 CF:1)
25300
25400 REQUEST: \4WHY
25500 \*(PUP WANTS ELEMENT:4 ,AND WE DON'T HAVE TO DO ANY COMPUTING TO GET IT
25600 AND TAKE:HOLD:OF IS TOO GENERAL TO USE AS
25700 IT IS)
25800
25900 REQUEST: \4HOW
26000 \*(LOOK AROUND A LITTLE; IF IT ISNT FOUND TRIVIALLY, THEN ASK THE USER
26100 TO GIVE ELEMENT:4 TO US)
26200
26300 REQUEST: \4AFFECTS
26400 \*((IN POSSIBLE CALLED)
26500 (ELEMENT:4 POSSIBLE CALLED)
26600 (ELEMENT:4 POSSIBLE CALLED)
26700 (ELEMENT:OBJECTS:11 POSSIBLE CALLED)
26800 (ELEMENT:CLASSNAME:13 POSSIBLE CALLED)
26900 (ELEMENT:RELNS:15 POSSIBLE CALLED))
27000
27100 REQUEST: \4QUIT
27200
27300
27400 \*(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
27500
27600 \4(??? (A B) (BLOCK A]\*
27700
27800 INTERRUPT? \4NO
27900 \*INTERRUPT? \4YES
28000
28100 \*REQUEST: \4CH
28200 \*NIL *** SOME:PART:OF:14 *** (TAKE:HOLD:OF:3 PAD:2 CF:1)
28300
28400 REQUEST: \4WHAT
28500 \*(A SPECIALIZED BEING WHICH DOES (THIS IS A DESTRUCTIVE FUNCTION; IT
28600 BREAKS A PIECE OFF OF (??? (A B) (BLOCK A))))
28700
28800 REQUEST: \4HOW
28900 \*(USE SOME PRE:EXISTING TECHNIQUE TO GET THE SIMPLE LISP PROGRAM (MADE
29000 UP OF CARS AND CDRS) WHICH DOES THE JOB. SUCH
29100 FACILITIES MIGHT BE PW1, PUP, DAVID SHAW'S PGM,
29200 OR EVEN TRIAL AND ERROR.)
29300
29400 REQUEST: \4WHY
29500 \*(ONLY PART OF (??? (A B) (BLOCK A)) IS DESIRED AT THIS POINT, AND
29600 SOME:PART:OF IS TOO GENERAL TO USE AS IT IS)
29700
29800 REQUEST: \4META:CODE
29900 \*(PROGN (COMMENT IN ALL CALLS TO DATE, ARG1 IS INSTANTIATED AS (COMMENT
30000 EVAL ARG1))
30100 (CAR ARG1))
30200
30300 REQUEST: \4QUIT
30400
30500 \*INTERRUPT? \4NO
30600 \*INTERRUPT? \4NO
30700 \*INTERRUPT? \4NO
30800 \*INTERRUPT? \4YES
30900
31000 \*REQUEST: \4CH
31100 \*NIL *** FOREACH:17 *** (GET:HOLD:OF:8 PAD:2 CF:1)
31200
31300 REQUEST: \4WHAT
31400 \*(A SPECIALIZED BEING WHICH DOES (GO THROUGH THE KNOWN SPACE OF POSSIBLE
31500 NAMES:OF:CLASS ,WHICH IS
31600 SET:OF:POSSIBLE:NAMES:OF:CLASS ,AND PERFORM
31700 (TEST:18 POSSIBLE:NAME:OF:CLASS
31800 (COMMENT FOR SATISFACTION OF GOAL CRITERIA))
31900 ON EACH, UNTIL SOME SPECIFIED TERMINATION
32000 CONDITION IS REACHED))
32100
32200 REQUEST: \4QUIT
32300
32400 \*INTERRUPT? \4YES
32500
32600 \*REQUEST: \4BEING
32700 \*TEST:18
32800
32900 REQUEST: \4WHAT
33000 \*(A SPECIALIZED BEING WHICH DOES (TEST TO SEE IF THE ARG1 ARCH MEETS
33100 THE DESIRED CONDITIONS (COMMENT FOR SATISFACTION
33200 OF GOAL CRITERIA)))
33300
33400 REQUEST: \4QUIT
33500
33600 \*INTERRUPT? \4NO
33700 \*INTERRUPT? \4NO
33800 \*INTERRUPT? \4NO
33900 \*INTERRUPT? \4YES
34000
34100 \*REQUEST: \4CH
34200 \*NIL *** COMPARE:26 *** (COMPARE:19 TEST:18 FOREACH:17 GET:HOLD:OF:8
34300 PAD:2 CF:1)
34400
34500 REQUEST: \4WHAT
34600 \*(A SPECIALIZED BEING WHICH DOES (COMPARE ((S A B) (BLOCK A) (BLOCK B)
34700 (BLOCK C) (TOUCH A C) (S C B))
34800 WITH
34900 ((BLOCK A))))
35000
35100 REQUEST: \4WHY
35200 \*(PUP WANTS TO SEE IF ((S A B) (BLOCK A) (BLOCK B) (BLOCK C) (TOUCH A C)
35300 S C B)) IS CLOSE ENOUGH TO ((BLOCK A))
35400 ND COMPARE IS TOO GENERAL TO USE AS IT IS)
35500
35600 REQUEST: \4QUIT
35700
35800 \*INTERRUPT? \4YES
35900
36000 \*REQUEST: \4CH
36100 \*NIL *** CONTRADICTS:27 *** (COMPARE:26 COMPARE:19 TEST:18 FOREACH:17
36200 GET:HOLD:OF:8 PAD:2 CF:1)
36300
36400 REQUEST: \4WHAT
36500 \*(A SPECIALIZED BEING WHICH DOES (SEE IF (S A B) IS IN CONTRADICTION TO
36600 THE COLLECTION ((BLOCK A))))
36700
36800 REQUEST: \4HOW
36900 \*(SEE HOW A (S A B) TYPE OF ARG1 CAN BE CONTRADICTORY, THEN EXAMINE THE
37000 RELATIONSHIP BETWEEN (S A B) AND ((BLOCK A)))
37100
37200 REQUEST: \4QUIT
37300
37400 \*INTERRUPT? \4YES
37500
37600 \*REQUEST: \4CH
37700 \*NIL *** JOIN:23 *** (COMPARE:19 TEST:18 FOREACH:17 GET:HOLD:OF:8 PAD:2
37800 CF:1)
37900
38000 REQUEST: \4QUIT
38100
38200 \*INTERRUPT? \4YES
38300
38400 \*REQUEST: \4CH
38500 \*NIL *** TEST:18 *** (FOREACH:17 GET:HOLD:OF:8 PAD:2 CF:1)
38600
38700 REQUEST: \4QUIT
38800
38900 \*INTERRUPT? \4NO
39000 \*INTERRUPT? \4NO
39100 \*INTERRUPT? \4NO
39200 \*INTERRUPT? \4NO
39300 \*INTERRUPT? \4YES
39400
39500 \*REQUEST: \4CH
39600 \*NIL *** CONTRADICTS:27 *** (COMPARE:26 COMPARE:19 TEST:18 FOREACH:17
39700 GET:HOLD:OF:8 PAD:2 CF:1)
39800
39900 REQUEST: \4META:CODE
40000 \*(PROGN
40100 (COMMENT IN ALL CALLS TO DATE, ARG1 IS INSTANTIATED AS RELATION)
40200 (COMMENT IN ALL CALLS TO DATE, ARG2 IS
40300 INSTANTIATED AS ELEMENT:RELNS:15)
40400 (COND ((MEMBER ARG1 YES:RELNS:28)
40500 (COMMENT ARG1 OCCURS WITH PROBABILITY 1, SO IT HAD
40600 BETTER BE IN ARG2, THE RELEVANT PIECE OF THE WORLD)
40700 (NOT (MEMBER ARG1 ARG2)))
40800 ((MEMBER ARG1 NO:RELNS:29)
40900 (COMMENT SINCE ARG1 SHOULD NEVER OCCUR, WE HAVE A
41000 CONTRADICTION IFF IT IS A MEMBER OF ARG2)
41100 (MEMBER ARG1 ARG2))
41200 (T (COMMENT WE MAY OR MAY NOT HAVE ARG1 IN ARG2; EITHER
41300 CASE IS ALLOWABLE; SO WE NEVER HAVE A
41400 CONTRADICTION)
41500 NIL)))
41600
41700
41800 REQUEST: \4QUIT
41900
42000 \*INTERRUPT? \4NO
42100 \*INTERRUPT? \4YES
42200
42300 \*REQUEST: \4CH
42400 \*NIL *** TEST:18 *** (FOREACH:17 GET:HOLD:OF:8 PAD:2 CF:1)
42500
42600 REQUEST: \4WHAT
42700 \*(A SPECIALIZED BEING WHICH DOES (TEST TO SEE IF THE ARG1 ROW MEETS THE
42800 DESIRED CONDITIONS (COMMENT FOR SATISFACTION
42900 OF GOAL CRITERIA)))
43000
43100 REQUEST: \4QUIT
43200
43300 \*INTERRUPT? \4NO
43400 \*INTERRUPT? \4NO
43500 \*INTERRUPT? \4NO
43600 \*INTERRUPT? \4NO
43700 \*INTERRUPT? \4NO
43800 \*INTERRUPT? \4YES
43900
44000 \*REQUEST: \4CH
44100 \*NIL *** CONTRADICTS:27 *** (COMPARE:26 COMPARE:19 TEST:18 FOREACH:17
44200 GET:HOLD:OF:8 PAD:2 CF:1)
44300
44400 REQUEST: \4QUIT
44500
44600 \*INTERRUPT? \4YES
44700
44800 \*REQUEST: \4CH
44900 \*NIL *** CONTRADICTS:27 *** (COMPARE:26 COMPARE:19 TEST:18 FOREACH:17
45000 GET:HOLD:OF:8 PAD:2 CF:1)
45100
45200 REQUEST: \4WHAT
45300 \*(A SPECIALIZED BEING WHICH DOES (SEE IF (BLOCK A) IS IN CONTRADICTION
45400 TO THE COLLECTION ((BLOCK A))))
45500
45600 REQUEST: \4QUIT
45700
45800 \*INTERRUPT? \4YES
45900
46000 \*REQUEST: \4CH
46100 \*NIL *** CONTRADICTS:27 *** (COMPARE:26 COMPARE:19 TEST:18 FOREACH:17
46200 GET:HOLD:OF:8 PAD:2 CF:1)
46300
46400 REQUEST: \4WHAT
46500 \*(A SPECIALIZED BEING WHICH DOES (SEE IF (RED B) IS IN CONTRADICTION TO
46600 THE COLLECTION ((BLOCK A))))
46700
46800 REQUEST: \4QUIT
46900
47000 \*INTERRUPT? \4NO
47100
47200
47300 \*(COMMENT I MUST TELL YOU (COMMENT MY GUESS FOR POSSIBLE:NAME:OF:CLASS
47400 IS ROW))
47500
47600 INTERRUPT? \4YES
47700
47800 \*REQUEST: \4CH
47900 \*NIL *** ASK:USER:ABOUT:60 *** (FOREACH:17 GET:HOLD:OF:8 PAD:2 CF:1)
48000
48100 REQUEST: \4WHAT
48200 \*(A SPECIALIZED BEING WHICH DOES (ASK THE USER TO RESOLVE DECISION
48300 INVOLVING NAME:OF:CLASS))
48400
48500 REQUEST: \4WHY
48600 \*(BECAUSE PUP CANNOT RESOLVE IT, BUT MUST AT THIS TIME AND ASK:USER:ABOUT
48700 IS TOO GENERAL TO USE AS IT IS)
48800
48900 REQUEST: \4HOW
49000 \*(ASK THE USER WHAT THE RESOLUTION IS)
49100
49200 REQUEST: \4META:CODE
49300 \*(PROGN (COMMENT IN ALL CALLS TO DATE, ARG1 IS INSTANTIATED AS (COMMENT
49400 NAME:OF:CLASS))
49500 (PRIN1
49600 "
49700 PLEASE GIVE ME ")
49800 (PRINT ARG1)
49900 (SET ARG1 (READ)))
50000
50100
50200 REQUEST: \4QUIT
50300 \*
50400
50500
50600 PLEASE GIVE ME NAME:OF:CLASS
50700
50800 \4NOTHING\*
50900
51000 INTERRUPT? \4YES
51100
51200 \*REQUEST: \4CH
51300 \*NIL *** MODIFY:STRUCTURE:9 *** (PAD:2 CF:1)
51400
51500 REQUEST: \4WHAT
51600 \*(A SPECIALIZED BEING WHICH DOES (MODIFY THE STRUCTURE CONTAINING
51700 "NOTHING" AS AN ELEMENT))
51800
51900 REQUEST: \4QUIT
52000
52100 \*INTERRUPT? \4YES
52200
52300 \*REQUEST: \4BEING
52400 \*CONDITIONAL:INSERTION:44
52500
52600 REQUEST: \4QUIT
52700
52800 \*INTERRUPT? \4NO
52900 \*INTERRUPT? \4NO
53000 \*INTERRUPT? \4YES
53100
53200 \*REQUEST: \4CH
53300 \*NIL *** COMPLEX:ALTERATION:46 *** (COMPLEX:ALTERATION:45
53400 MODIFY:STRUCTURE:9 PAD:2 CF:1)
53500
53600 REQUEST: \4WHAT
53700 \*(A SPECIALIZED BEING WHICH DOES (ALTER ROW AND/OR ANOTHER ELEMENT OF
53800 THE SAME OUTER LIST))
53900
54000 REQUEST: \4WHY
54100 \*(BECAUSE MODIFYING THE STRUCTURE OF AN INDIVIDUAL ELEMENT IS EQUIVALENT
54200 TO UPDATING OUR DESCRIPTION OF A SINGLE
54300 PARTICULAR CONCEPT, AND THIS IS FUNDAMENTAL
54400 TO A DECENT CONCEPT FORMATION
54500 PROGRAM, AND COMPLEX:ALTERATION IS TOO GENERAL
54600 TO USE AS IT IS)
54700
54800 REQUEST: \4HOW
54900 \*(BY MODIFYING THE STRUCTURE OF SUCH AN ELEMENT)
55000
55100 REQUEST: \4OLDER
55200 \*COMPLEX:ALTERATION:45
55300
55400 REQUEST: \4CH
55500 \*(COMPLEX:ALTERATION:46) *** COMPLEX:ALTERATION:45 *** (MODIFY:STRUCTURE:9
55600 PAD:2 CF:1)
55700
55800 REQUEST: \4QUIT
55900
56000 \*INTERRUPT? \4NO
56100 \*INTERRUPT? \4NO
56200 \*INTERRUPT? \4NO
56300 \*INTERRUPT? \4YES
56400
56500 \*REQUEST: \4CH
56600 \*NIL *** IS:OF:TYPE:61 *** (PAD:2 CF:1)
56700
56800 REQUEST: \4WHAT
56900 \*(A SPECIALIZED BEING WHICH DOES (SEE IF ARG IS OF THE TYPE SPECIFIED.
57000 THE PARTICULAR TYPE IS DELINEATED BY THE SPECIAL
57100 KNOWLEDGE: (COMMENT BREAKAWAY)))
57200
57300 REQUEST: \4META:CODE
57400 \*(EQUAL NAME:OF:CLASS HALT)
57500
57600 REQUEST: \4QUIT
57700
57800 \*INTERRUPT? \4YES
57900
58000 \*REQUEST: \4CH
58100 \*NIL *** FOREACH *** (PAD:2 CF:1)
58200
58300 REQUEST: \4WHAT
58400 \*(GO THROUGH THE KNOWN SPACE OF NAMES,
58500 WHICH IS SET:OF:POSSIBLE:NAMES:OF:CLASS,
58600 AND PERFORM
58700 (PROGN (PRINT NAME)
58800 (COND ((GETP NAME CLASS:OBJECTS:33)
58900 (PRIN1 "OBJECTS ")
59000 (PRINT (GETP NAME
59100 CLASS:OBJECTS:33))))
59200 (COND ((GETP NAME CLASS:YES:RELNS:35)
59300 (PRIN1 "MUST HAVE ")
59400 (PRINT (GETP NAME
59500 CLASS:YES:RELNS:35))))
59600 (COND ((GETP NAME CLASS:NO:RELNS:36)
59700 (PRIN1 "MUSNT HAVE ")
59800 (PRINT (GETP NAME
59900 CLASS:NO:RELNS:36))))
60000 (COND ((GETP NAME CLASS:MAYBE:RENS:37)
60100 (PRIN1 "MAY HAVE ")
60200 (PRINT (GETP NAME
60300 CLASS:MAYBE:RELNS:37))))
60400 (TERPRI)
60500 T)
60600 ON EACH, UNTIL
60700 SOME SPECIFIED TERMINATION CONDITION IS REACHED)
60800
60900
61000 REQUEST: \4QUIT
61100 \*
61200
61300 ARCH
61400 OBJECTS (A B C (D))
61500 MUST HAVE ((S A B))
61600 MAY HAVE ((BLOCK A) (BLOCK B) (BLOCK C) (TOUCH A C) (S C B))
61700
61800 TOWER
61900 OBJECTS (A B C D)
62000 MUST HAVE ((S A B))
62100 MAY HAVE ((S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
62200
62300 ROW
62400 OBJECTS (A B C)
62500 MUST HAVE ((TOUCH A C))
62600 MAY HAVE ((TOUCH B C) (BLOCK A) (RED B))
62700
62800
62900 INTERRUPT? \4YES
63000
63100 \*REQUEST: \4SET:OF:POSSIBLE:NAMES:OF:CLASS
63200 \*(ARCH TOWER ROW)
63300
63400 REQUEST: \4CH
63500 \*NIL *** TAKE:HOLD:OF:3 *** (PAD:2 CF:1)
63600
63700 REQUEST: \4WHAT
63800 \*(A SPECIALIZED BEING WHICH DOES (TAKE THE ARG1 ELEMENT:4 IN A TRIVIAL
63900 WAY; EITHER BY ACCESSING IT OR BY READING
64000 IT IN))
64100
64200 REQUEST: \4QUIT
64300
64400
64500 \*(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
64600
64700 \4(??? (A B C) (BLOCK A) (BLOCK B]\*
64800
64900
65000 INTERRUPT? \4YES
65100
65200 \*REQUEST: \4ELEMENT:4
65300 \*(??? (A B C) (BLOCK A) (BLOCK B))
65400
65500 REQUEST: \4CH
65600 \*NIL *** SOME:PART:OF:12 *** (TAKE:HOLD:OF:3 PAD:2 CF:1)
65700
65800 REQUEST: \4QUIT
65900
66000 \*INTERRUPT? \4NO
66100 \*INTERRUPT? \4NO
66200 .
66300 .
66400 .
66500 \*INTERRUPT? \4NO
66600 \*INTERRUPT? \4NO
66700 \*INTERRUPT? \4NO
66800 \*
66900
67000
67100 (COMMENT I MUST TELL YOU (COMMENT I GIVE UP))
67200
67300 .
67400 .
67500 .
67600
67700 REQUEST: \4CH
67800 \*NIL *** SIMPLE:COMPARE:FN:43 *** (BETTER:38 CONDITIONAL:INSERTION:55
67900 MODIFY:STRUCTURE:42 COMPLEX:ALTERATION:45
68000 MODIFY:STRUCTURE:9 PAD:2 CF:1)
68100
68200 REQUEST: \4WHAT
68300 \*(A SPECIALIZED BEING WHICH DOES (QUASI-COMPARISON WHICH ALWAYS RETURNS
68400 A CONSTANT VALUE))
68500
68600 REQUEST: \4WHY
68700 \*(BECAUSE ORDERING ISNT VERY IMPORTANT HERE, AND SIMPLE:COMPARE:FN IS
68800 TOO GENERAL TO USE AS IT IS)
68900
69000 REQUEST: \4QUIT
69100
69200 \*INTERRUPT? \4YYES
69300 \*
69400 WRONG; TYPE YES OR NO ......... INTERRUPT? \4YES
69500
69600 \*REQUEST: \4CH
69700 \*NIL *** BETTER:38 *** (CONDITIONAL:INSERTION:55 MODIFY:STRUCTURE:42
69800 COMPLEX:ALTERATION:45 MODIFY:STRUCTURE:9 PAD:2
69900 CF:1)
70000
70100 REQUEST: \4EXPLICIT:ARGS
70200 \*(B1 B2)
70300
70400 REQUEST: \4B1
70500 \*(S A B)
70600
70700 REQUEST: \4B2
70800 \*(S C D)
70900
71000 REQUEST: \4OLDER
71100 \*CONDITIONAL:INSERTION:55
71200
71300 REQUEST: \4CH
71400 \*(BETTER:38) *** CONDITIONAL:INSERTION:55 *** (MODIFY:STRUCTURE:42
71500 COMPLEX:ALTERATION:45 MODIFY:STRUCTURE:9 PAD:2
71600 CF:1)
71700
71800 REQUEST: \4WHAT
71900 \*(A SPECIALIZED BEING WHICH DOES (PERHAPS WE WILL STICK IN A CONDITIONAL
72000 INSERTION STATEMENT, STICKING IN AN
72100 ((S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C)) -TYPE
72200 ELEMENT INTO ITS PARENT
72300 STRUCTURE))
72400
72500 REQUEST: \4META:CODE
72600 \*(PROGN
72700 (SETQ RESULT:7 (LIST:JOIN RESULT:5 RESULT:6
72800 (SETDIFFERENCE ELEMENT:RELNS:15
72900 (APPEND (GETP NAME:OF:CLASS
73000 CLASS:YES:RELNS:35)
73100 (GETP NAME:OF:CLASS
73200 CLASS:NO:RELNS:36)
73300 (GETP NAME:OF:CLASS
73400 CLASS:MAYBE:RELNS:37))
73500 )))
73600 NIL
73700 (COND
73800 (RESULT:7
73900 (PUT NAME:OF:CLASS
74000 CLASS:MAYBE:RELNS:37
74100 (MERGE:IN RESULT:7
74200 (GETP NAME:OF:CLASS
74300 CLASS:MAYBE:RELNS:37)
74400 BETTER:38)))
74500 (T (SETQ RESULT:7 NIL))))
74600
74700
74800 REQUEST: \4RESULT:7
74900 \*((S A B))
75000
75100 REQUEST: \4RESULT:6
75200 \*NIL
75300
75400 REQUEST: \4RESULT:5
75500 \*((S A B))
75600
75700 REQUEST: \4(GETP NAME:OF:CLASS CLASS:MAYBE:RELNS:37]
75800 \*((S B C) (S C D) (BLOCK A) (BLOCK B) (BLOCK C))
75900
76000 REQUEST: \4QUIT
76100 .
76200 .
76300 .
76400 \*(COMMENT READY TO ACCEPT BRAND NEW ELEMENT:4)
76500
76600 \4(HALT)\*
76700
76800
76900
77000 FINISHED CURRENT SERVICE; WHAT SHOULD I DO? TYPE ONE OF:
77100
77200 1 EXIT FROM SYSTEM
77300 2 CONTINUE SERVING, AS BEFORE
77400 3 CONTINUE SERVING, BUT GET A NEW USER INTERRUPT LEVEL
77500 4 REINITIALIZE SYSTEM AND START FROM BEGINNING AGAIN
77600
77700 OK, GO .......... \41\*
77800
77900 "EXITING SYSTEM"
78000
78100 \5<end of session with the synthesized program>\*
78200
78300 ←\4SET:OF:POSSIBLE:NAMES:OF:CLASS\*
78400 (ARCH TOWER ROW HALT)
78500
78600 ←\4CDR(ARCH)\*
78700 (CLASS:OBJECTS:33 (A B C (D))
78800 CLASS:CLASSNAME:34 ARCH
78900 CLASS:YES:RELNS:35 ((S A B))
79000 CLASS:NO:RELNS:36 NIL
79100 CLASS:MAYBE:RELNS:37 ((BLOCK A) (BLOCK B) (BLOCK C) (TOUCH A C) (S C B)))